
package com.hlkj.pay.gateway.order;
/*
 * Hlpay-Plus aggregate payment system.
 * Copyright (c) 2024-2025 Hlpay Team Copyright has the right of final interpretation.
 */

import java.util.List;

import com.hlkj.pay.dto.merchant.MerchantAccessDto;
import com.hlkj.pay.dto.order.OrderFundDto;
import com.hlkj.pay.infrastructure.model.order.OrderFundDetailDO;
import com.hlkj.pay.infrastructure.model.order.OrderNotifyDO;
import com.hlkj.pay.infrastructure.model.order.PayOrderDO;
import com.hlkj.pay.infrastructure.model.order.RefundOrderDO;
import com.hlkj.pay.infrastructure.model.order.*;
import com.hlkj.pay.infrastructure.model.payment.MerchantPaymentDO;
import com.hlkj.pay.infrastructure.model.payment.MerchantPaymentDetailDO;

/**
 * @author HlpayTeam
 * @date 2024/11/07 11:04
 */
public interface IOrderNotifyGateway {

    /**
     *
     * @param payOrderDO
     * @return
     */
    OrderNotifyDO notifyPayOrder(PayOrderDO payOrderDO, List<OrderFundDetailDO> payOrderFundList);

    /**
     *
     * @param refundOrderDO
     * @return
     */
    OrderNotifyDO notifyRefundOrder(RefundOrderDO refundOrderDO);

    /**
     *
     * @param merchantPaymentDto
     * @return
     */
    OrderNotifyDO notifyPaymentOrder(MerchantPaymentDO merchantPaymentDO, MerchantPaymentDetailDO merchantPaymentDetailDO);

    /**
     *
     * @param merchantAccessDto
     * @return
     */
    OrderNotifyDO notifyMerchantAccess(MerchantAccessDto merchantAccessDto);

    /**
     *
     * @param accessSettleOrderDO
     * @return
     */
    OrderNotifyDO notifyMerchantAccessSettle(OrderSettleDO accessSettleOrderDO);

    /**
     * 
     * @param orderFundDto
     * @return
     */
    OrderNotifyDO notifyOrderFund(OrderFundDto orderFundDto);

    /**
     *
     * @param orderTransferDO
     * @return
     */
    OrderNotifyDO notifyOrderTransfer(OrderTransferDO orderTransferDO);

    /**
     *
     * @param orderWithdrawDO
     * @return
     */
    OrderNotifyDO notifyOrderWithdraw(OrderWithdrawDO orderWithdrawDO);
}
